package com.cskaoyan.api.controll;

/*
        public void interrupt()
        1. 中断线程。（打断线程的阻塞状态）
        2. 如果线程在调用 Object 类的 wait()、wait(long)
           或 wait(long, int) 方法，或者该类(Thread)的 join()、join(long)、join(long, int)、sleep(long) 或 sleep(long, int)
           方法过程中受阻，它还将收到一个 InterruptedException。


       注意：
        interrupt方法，只会针对线程的阻塞状态，打断线程的阻塞状态

 */
public class Demo4Interrupt {

    public static void main(String[] args) {
        // 创建线程
        InterruptThread interruptThread = new InterruptThread();
        // 启动线程
        interruptThread.start();

        // 主线程休眠1秒
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        // 在main线程中，终止interruptThread终止线程的阻塞
        interruptThread.interrupt();


    }
}


class InterruptThread extends Thread {
    @Override
    public void run() {
        try {
            System.out.println("start");
            Thread.sleep(5000);
            System.out.println("end");
        } catch (InterruptedException e) {
            //e.printStackTrace();
            System.out.println("被打断了");
        }

        System.out.println("after interrupt");

    }
}
